分析 SQL 語法除了如之前的文章介紹,可以用 EXPLAIN 之外,還可以用更詳細的 EXPLAIN ANALYZE 。EXPLAIN ANALYZE 除了原本 EXPLAIN 已經的分析之外,從下面的範例和 EXPLAIN 的對照,可以清楚地看到 EXPLAIN ANALYZE 會多一些時間的統計、 memory 的使用量、 hash 時 bucket 數量、每個 node 執行的次數(loop) 和 sorting 用的演算法等。
EXPLAIN ANALYZE
SELECT * FROM person
INNER join city on city.city_id = person.city_id
where city.country_id = 1
order by person.identity_id
因為 EXPLAIN ANALYZE 多了每個 node 執行的次數,所以 pgAdmin 分析的表格會多 Loops 這個欄位,可以很清楚看到每個 node 執行了幾次。
pgAdmin 的 EXPLAIN ANALYZE 一樣也會把每個 node 的 type 做統計。
而且一樣會提供 query 中 table 關係和每個 node 的圖。
另外,當點了圖中的其中一個 node ,右邊會跳出這個 node 執行狀況的細節,這樣就可以更方便找出影響效能的 node 。
Reference: